import {
    defineStore
} from 'pinia';

import {
    ref,
    computed
} from 'vue';

import axios from 'axios';

// 写法1
const useCounterStore = defineStore('counter', () => {

    // 定义数据state
    const count = ref(0)

    // 修改数据的方法
    const increment = () => {
        count.value++
    }

    // getter定义。使用计算属性返回值
    const doublCount = computed(() => {
        return count.value * 2
    })


    // 异步action
    // 定义异步函数并导出，在组件内部调用
    const list = ref([])
    const getList = async () => {
        const res = await axios.get('http://geek.itheima.net/v1_0/channels') 
        list.value = res.data.data.channels
    }


    // 以对象的形式返回
    return {
        count,
        increment,
        doublCount,
        list,
        getList
    }
})

// 写法2
// export const useCounterStore = defineStore('counter', {
//     state: () => ({
//         count: 0
//     }),
//     getters: {
//         double: (state) => state.count * 2,
//     },
//     actions: {
//         increment() {
//             this.count++
//         },
//     },
// })


export {
    useCounterStore
}